1. Field of the Invention
This invention relates to the field of memory addressing schemes. In particular, this invention relates to a memory addressing scheme for laser printer font or program cartridges.
2. Background Art
Computer systems provide visual output on computer displays, such as a cathode ray tube (CRT), or to a printer to produce hard copy. A typical use of a printer on a computer system is to provide hard copy of text output from a word processor or other text editing program. One type of printer used with computer systems is known as a "laser printer." In a laser printer, a laser beam is used to scan across the surface of a photo-sensitive material to form patterns of electrical charge. The photosensitive material, which may be disposed on a drum, normally has a negative charge. Wherever the laser strikes the drum, a relatively positive "dot" of charge is created. These dots combine to form patterns, images and letters on the surface of the drum. Negatively charged toner particles are attracted to the positively charged dots on the surface of the drum. This toner pattern is then transferred to a sheet of paper passed adjacent to the drum. The toner image, which is now printed on the paper, is fused by passing the paper and toner through a heated roller, and the printed page exits from the printer.
A laser printer is not limited in the type of pattern or image that can be created on the drum. Therefore, laser printers are used to provide a variety of typefaces or "fonts" for displaying text characters.
A font is a collection of character representations that are of a specific typeface (such as Courier, Times, etc.) combined with a specific style (Bold, Italic, Bold & Italic, etc.).
One type of font utilized by computer systems and laser printers is referred to as a "scalable outline font." In a scalable outline font, each character of the font is made up of a series of curves. The curves are defined as extending between a number of control points on the borders of a font character (hence the name "outline" fonts). Because the outline of each character is a mathematical description of a character shape, an outline font character can be scaled to virtually any size and still maintain its shape. When printed on a laser printer, an outline font character is translated to a "bit map" (series of dots) that fills the outline defined by the mathematical description of the character.
Printers that use scalable outline fonts come with a specific set of "built in" outline font data, referred to as "resident" font data, stored in the printer. The resident font data is stored in a non-volatile memory, such as a read only memory (ROM). The ROM includes character description and information for each character of each resident font. One area of the ROM is reserved as a "header" that identifies the resident fonts available to a computer user using the printer and the addresses of the character information for each character of a font.
Often, computer users desire to use fonts in addition to those resident fonts provided by a laser printer. Some printers provide mechanisms for adding additional scalable outline fonts, to provide a larger number of scalable outline fonts to choose from. One such mechanism provided is the "font cartridge," which can be inserted into the printer. The cartridge is normally composed of a fixed amount of readable memory that can be accessed by the printer's internal microprocessor. The printer's internal program is designed to recognize the presence of the font cartridge, and add any scalable outline fonts in the cartridge to the fonts available for use.
The font cartridge includes header information several hundred bytes in size and describes information common to all the characters described in the font, along with the locations in the cartridge of the "character" data for each of the several hundred characters described in the font.
Each instance of "character" data, identified in the common header, describes the appearance of a single character within the font, and is several hundred bytes in size. The majority of cartridge space is taken up by character data.
A disadvantage of laser printer font cartridges is that they are "address limited," that is, the number of address lines that can be used to address memory locations is fixed. In typical embodiments, only 2 megabytes of memory per cartridge can be addressed. This imposes a 2 megabyte limit on the amount of data that can be built into a scalable font cartridge, which effectively limits the cartridge to about twenty-five (25) scalable outline fonts.
A number of prior art attempts have been made to provide expanded memory configurations for address limited systems. Nielsen, U.S. Pat. No. 4,368,515 is directed to a bank switchable memory system. Nielsen describes a method of expanding the number of ROM memory locations that can be addressed by a computer system without requiring additional address lines. The scheme of Nielsen is used in connection with a game cartridge ROM for a video game system. The scheme of Nielsen uses an address decode logic block coupled to a 12-bit address line to search for certain predefined addresses. When these pre-defined addresses are detected, a flip-flop is enabled that adds an extra bit to the most significant bit (MSB) of the address lines. This effectively provides a 13-bit address line instead of the 12-bit address line provided by the computer system. Selection between the two groups of memory is achieved by designating a specific predefined 12-bit address as a "decode A" address and a second predefined 12-bit address as a "decode B" address. When the address decode logic block detects decode A or decode B, the appropriate output of a flip-flop is enabled so that subsequent 12-bit addresses access the appropriate memory locations in the selected memory bank.
Balaska, U.S. Pat. No. 4,485,457, is also directed to a memory system for use as a video game system that has a limited number of address lines. The system of Balaska uses a decoding circuit coupled to a data bus and an address bus. The data bus is coupled to a random access memory and the address communicates to a read-only memory. A decoding circuit is coupled to the data bus and to the address bus. The decoding circuit detects a predetermined address and a predetermined status of selected data lines and produces a signal that selects one of the plurality of ROM segments of memory locations. The device of Balaska provides three banks of ROM that are addressed by three particular 12-bit ROM read signals.
Lushtak, U.S. Pat. No., 4,503,491 is directed to a computer with an addressing capability greater than the number of addresses that can be generated by its address lines. The device of Lushtak provides a plurality of memory banks and bank selection is effected by supplying a first address which enables a bank-select decoding logic. The device of Lushtak requires predefined addresses to select a memory location.
Kummer, U.S. Pat. No. 4,609,996 is directed to a microcomputer that uses a memory expansion module. The memory system associated with a central processing unit (CPU) comprises a base memory and an add-on expansion memory. When both memories are installed, one memory has even-numbered addresses and another has odd-numbered addresses. The CPU accesses individual address locations, but a subsystem addresses even addresses to obtain data from the even address memory bank and the next higher odd address. The least significant bit of the address bits is used to indicate which memory bank (even or odd) is to be accessed. If the address is an even address, the address is provided to the memory bank storing even addresses. If the incoming address is odd, the last bit is dropped and a more significant bit is added to the address and the memory bank containing the odd number of bits is accessed.
Yokoyama, U.S. Pat. No. 4,866,671 describes a system for expanding character generator ROM and buffer RAM space in a printer by searching for empty areas in an address space of a printer memory and utilizing the empty space for additional storage.
Nakagawa, U.S. Pat. No. 4,926,372, describes a memory cartridge in which a large capacity ROM is provided. Storage area of the ROM is divided into a plurality of banks having memory addresses accessible by a CPU. Bank enable data is stored in each of the memory banks. When an access is made to a particular bank, data stored in that bank is read out to the processor. If that data includes a data work pointing to another memory bank, that memory bank is then enabled.
Prior art solutions to limited memory addressing capabilities have a number of disadvantages. One particular disadvantage is the fact that memory bank switching information must be predefined and made known to the CPU or other device accessing the memory. In other cases, additional address lines must be added to provide expanded addressability. None of the prior art solutions provide a scheme that expands memory address space while remaining transparent to the "host system" and without requiring additional address lines.